package cn.fenqing.utils;

import java.math.BigDecimal;
import java.util.Optional;

/**
 * 数学类型utils
 * @author fenqing
 */
public class MathUtils {
    /**
     * 保留小数
     *
     * @param number      数字
     * @param decimalsNum 保留小数数量
     * @param isRound     是否四舍五入
     * @return
     */
    public static String round(String number, int decimalsNum, boolean isRound) {
        Double doubleNum = Optional.ofNullable(number).map(Double::valueOf).orElse(null);
        if (doubleNum == null) {
            return null;
        }
        if (isRound) {
            return String.valueOf(new BigDecimal(number).setScale(decimalsNum, BigDecimal.ROUND_HALF_UP).doubleValue());
        } else {
            double pow = Math.pow(10, decimalsNum);
            return String.valueOf(((int) (doubleNum * pow)) / pow);
        }
    }

    /**
     * 保留小数
     *
     * @param number      数字
     * @param decimalsNum 保留小数数量
     * @param isRound     是否四舍五入
     * @return
     */
    public static String round(Double number, int decimalsNum, boolean isRound) {
        if (number == null) {
            return null;
        }
        return round(String.valueOf(number), decimalsNum, isRound);
    }
}